package com.sp.reflection.class_;

/**
 * Class介绍
 * 1. Class也是类, 因此也继承Object类
 * 2. Class类对象不是new出来的, 而是系统创建的
 * 3. 对于某个类的Class类对象, 在内存中只有一份, 因为类只加载一次
 * 4. 每个类的实力都会记得自己是由哪个Class实力锁生成
 * 5. 通过Class可以完整的得到一个类的完整结构, 通过一些列API
 * 6. Class对象是存放在堆的
 * 7. 类的字节码二进制数据, 是放在方法区的, 有的地方成为类的元数据(包括方法代码, 变量名, 方法名, 访问权限等等)
 */
public class Class_ {
    public static void main(String[] args) throws ClassNotFoundException {
        //1. Class也是类, 因此也继承Object类
        //2. Class类对象不是new出来的额, 而是系统创建的
        Class cls1 = Class.forName("com.sp.Cat");

        //3. 对于某个类的Class类对象, 在内存中只有一份, 因为类只加载一次
        Class cls2 = Class.forName("com.sp.Cat");
        System.out.println(cls1.hashCode());
        System.out.println(cls2.hashCode());
        Class cls3 = Class.forName("com.sp.Dog");
        System.out.println(cls3.hashCode());
    }
}
